package com.matrix.draft.sockettest.day11.handler;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

import java.nio.charset.StandardCharsets;

public class LengthFieldBasedFrameEncoder extends MessageToByteEncoder<String> {
    @Override
    protected void encode(ChannelHandlerContext ctx, String msg, ByteBuf out) throws Exception {
        // 设计如下
        // 长度 版本号 内容
        // LEN HRD CONTENT
        // 8   1   未知
        byte[] bytes = msg.getBytes(StandardCharsets.UTF_8);
        out.writeLong(bytes.length);
        out.writeByte(1);
        out.writeBytes(bytes);
    }
}
